The computer systems of today and tomorrow are challenging software developers to invent new paradigms for presenting applications to the users of their products. The challenge lies in harnessing the raw horsepower of the computer architecture and the new features of the system software in ways that significantly increase the productivity of the user and the work accomplished through the software application. Another challenge is to produce applications which will automatically increase in performance and throughput with introduced computer innovations without significant re-design of those applications.
In the typical prior art system the user has little or no control of the manner in which the computer system executes the user's application programs. One typical example of the lack of direct control over application program execution is the Microsoft Windows.TM. operating system. In that system when multiple application programs are running in enhanced mode under control of a 386 or 486 microprocessor, the user can set the minimum number of milliseconds that an application can run before the system gives control to another application. Frequent switching makes running a series of applications in an apparent multitasking situation appear smoother. Unfortunately the overall effect on system operation is to noticeably slow the performance of the application primarily in use. The user has no specific way of reconfiguring system operation to slow or speed the performance of any particular task, and no way of informing the system that a particular task can run in the background at any particular performance level.
This and other systems employ the traditional approach to the design of interactive software applications based on processing the user's request immediately and occupying the computer resource until the request is completed. This approach, however, is not well-suited for a typical user. Typically a user operates a computer system by a process of (1) thinking about the next task, (2) deciding what to do, (3) informing the computer about the decision using some form of input device, and (4) waiting while the computer processes the task. Then, these four steps are repeated for the next task. This simple sequence of steps is shown in FIG. 1. Steps 1, 2, and 3 are often accomplished while viewing the graphical user interface (GUI) of the application. If the GUI is not available to the user during step 4, then user time is wasted while waiting for the computer to finish processing the current task. We have developed a system which overcomes this disadvantage of prior art systems.